A storage system is a computer that provides storage service relating to the organization of data on writable persistent storage media, such as non-volatile memories and disks. The storage system may be configured to operate according to a client/server model of information delivery to thereby enable many clients (e.g., applications) to access the data served by the system. The storage system typically employs a storage architecture that serves the data in file system and block formats with both random and streaming access patterns. Disks generally provide good streaming performance (e.g., reading of large sequential blocks or “track reads”) but do not perform well on random access (i.e., reading and writing of individual disk sectors). In other words, disks operate most efficiently in streaming or sequential mode, whereas small random block operations can substantially slow the performance of disks.
One way to improve performance of the storage architecture of the storage system is through the use of caching. The term “caching” typically denotes temporary storage of often-accessed data in high-speed cache memories or “caches”. The caches are often constructed using dynamic random access memory (DRAM) technology. DRAM technology is generally embodied as volatile, electronic memory media that provides the benefit of good read/write random performance and low latency. The improvement provided by caching is both application and size dependent, with large caches providing better improvement. Large caches allow grouping of data into sufficiently large blocks such that the disks may be substantially accessed in a streaming fashion. However, in addition to being volatile, large DRAM caches are cost prohibitive.